<!doctype html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
<style>
body {
  font-family: Helvetica, arial, sans-serif;
  font-size: 14px;
  line-height: 1.6;
  padding-top: 10px;
  padding-bottom: 10px;
  background-color: white;
  padding: 30px; }

body > *:first-child {
  margin-top: 0 !important; }
body > *:last-child {
  margin-bottom: 0 !important; }

a {
  color: #4183C4; }
a.absent {
  color: #cc0000; }
a.anchor {
  display: block;
  padding-left: 30px;
  margin-left: -30px;
  cursor: pointer;
  position: absolute;
  top: 0;
  left: 0;
  bottom: 0; }

h1, h2, h3, h4, h5, h6 {
  margin: 20px 0 10px;
  padding: 0;
  font-weight: bold;
  -webkit-font-smoothing: antialiased;
  cursor: text;
  position: relative; }

h1:hover a.anchor, h2:hover a.anchor, h3:hover a.anchor, h4:hover a.anchor, h5:hover a.anchor, h6:hover a.anchor {
  background: url() no-repeat 10px center;
  text-decoration: none; }

h1 tt, h1 code {
  font-size: inherit; }

h2 tt, h2 code {
  font-size: inherit; }

h3 tt, h3 code {
  font-size: inherit; }

h4 tt, h4 code {
  font-size: inherit; }

h5 tt, h5 code {
  font-size: inherit; }

h6 tt, h6 code {
  font-size: inherit; }

h1 {
  font-size: 28px;
  color: black; }

h2 {
  font-size: 24px;
  border-bottom: 1px solid #cccccc;
  color: black; }

h3 {
  font-size: 18px; }

h4 {
  font-size: 16px; }

h5 {
  font-size: 14px; }

h6 {
  color: #777777;
  font-size: 14px; }

p, blockquote, ul, ol, dl, li, table, pre {
  margin: 15px 0; }

hr {
  background: transparent url() repeat-x 0 0;
  border: 0 none;
  color: #cccccc;
  height: 4px;
  padding: 0; }

body > h2:first-child {
  margin-top: 0;
  padding-top: 0; }
body > h1:first-child {
  margin-top: 0;
  padding-top: 0; }
  body > h1:first-child + h2 {
    margin-top: 0;
    padding-top: 0; }
body > h3:first-child, body > h4:first-child, body > h5:first-child, body > h6:first-child {
  margin-top: 0;
  padding-top: 0; }

a:first-child h1, a:first-child h2, a:first-child h3, a:first-child h4, a:first-child h5, a:first-child h6 {
  margin-top: 0;
  padding-top: 0; }

h1 p, h2 p, h3 p, h4 p, h5 p, h6 p {
  margin-top: 0; }

li p.first {
  display: inline-block; }

ul, ol {
  padding-left: 30px; }

ul :first-child, ol :first-child {
  margin-top: 0; }

ul :last-child, ol :last-child {
  margin-bottom: 0; }

dl {
  padding: 0; }
  dl dt {
    font-size: 14px;
    font-weight: bold;
    font-style: italic;
    padding: 0;
    margin: 15px 0 5px; }
    dl dt:first-child {
      padding: 0; }
    dl dt > :first-child {
      margin-top: 0; }
    dl dt > :last-child {
      margin-bottom: 0; }
  dl dd {
    margin: 0 0 15px;
    padding: 0 15px; }
    dl dd > :first-child {
      margin-top: 0; }
    dl dd > :last-child {
      margin-bottom: 0; }

blockquote {
  border-left: 4px solid #dddddd;
  padding: 0 15px;
  color: #777777; }
  blockquote > :first-child {
    margin-top: 0; }
  blockquote > :last-child {
    margin-bottom: 0; }

table {
  padding: 0;border-collapse: collapse; }
  table tr {
    border-top: 1px solid #cccccc;
    background-color: white;
    margin: 0;
    padding: 0; }
    table tr:nth-child(2n) {
      background-color: #f8f8f8; }
    table tr th {
      font-weight: bold;
      border: 1px solid #cccccc;
      text-align: left;
      margin: 0;
      padding: 6px 13px; }
    table tr td {
      border: 1px solid #cccccc;
      text-align: left;
      margin: 0;
      padding: 6px 13px; }
    table tr th :first-child, table tr td :first-child {
      margin-top: 0; }
    table tr th :last-child, table tr td :last-child {
      margin-bottom: 0; }

img {
  max-width: 100%; }

span.frame {
  display: block;
  overflow: hidden; }
  span.frame > span {
    border: 1px solid #dddddd;
    display: block;
    float: left;
    overflow: hidden;
    margin: 13px 0 0;
    padding: 7px;
    width: auto; }
  span.frame span img {
    display: block;
    float: left; }
  span.frame span span {
    clear: both;
    color: #333333;
    display: block;
    padding: 5px 0 0; }
span.align-center {
  display: block;
  overflow: hidden;
  clear: both; }
  span.align-center > span {
    display: block;
    overflow: hidden;
    margin: 13px auto 0;
    text-align: center; }
  span.align-center span img {
    margin: 0 auto;
    text-align: center; }
span.align-right {
  display: block;
  overflow: hidden;
  clear: both; }
  span.align-right > span {
    display: block;
    overflow: hidden;
    margin: 13px 0 0;
    text-align: right; }
  span.align-right span img {
    margin: 0;
    text-align: right; }
span.float-left {
  display: block;
  margin-right: 13px;
  overflow: hidden;
  float: left; }
  span.float-left span {
    margin: 13px 0 0; }
span.float-right {
  display: block;
  margin-left: 13px;
  overflow: hidden;
  float: right; }
  span.float-right > span {
    display: block;
    overflow: hidden;
    margin: 13px auto 0;
    text-align: right; }

code, tt {
  margin: 0 2px;
  padding: 0 5px;
  white-space: nowrap;
  border: 1px solid #eaeaea;
  background-color: #f8f8f8;
  border-radius: 3px; }

pre code {
  margin: 0;
  padding: 0;
  white-space: pre;
  border: none;
  background: transparent; }

.highlight pre {
  background-color: #f8f8f8;
  border: 1px solid #cccccc;
  font-size: 13px;
  line-height: 19px;
  overflow: auto;
  padding: 6px 10px;
  border-radius: 3px; }

pre {
  background-color: #f8f8f8;
  border: 1px solid #cccccc;
  font-size: 13px;
  line-height: 19px;
  overflow: auto;
  padding: 6px 10px;
  border-radius: 3px; }
  pre code, pre tt {
    background-color: transparent;
    border: none; }
    
@media screen and (min-width: 914px) {
    body {
        width: 854px;
        margin:0px auto;
    }
}
</style>
<title>iOS 统计分析 Release Note</title>

</head>
<body>
<h1>iOS 统计分析 Release Note</h1>

<h3>版本：v3.6.4</h3>
<ul>
    <li>发布日期：2015.10.9</li>
    <li>主要更新：
        <ol>
            <li>增加账号功能</li>
            <li>改进SDK稳定性</li>
        </ol>
    </li>
</ul>
<hr />

<h3>版本：v3.5.16</h3>
<ul>
    <li>发布日期：2015.9.18</li>
    <li>主要更新：
        <ol>
            <li>增加bitcode编译支持</li>
            <li>删除自动更新功能模块</li>
        </ol>
    </li>
</ul>
<hr />


<h3>版本：v3.5.10</h3>
<ul>
    <li>发布日期：2015.7.20</li>
    <li>主要更新：
        <ol>
            <li>修复对时长计算的潜在问题</li>
        </ol>
    </li>
</ul>
<hr />

<h3>版本：v3.5.8</h3>
<ul>
    <li>发布日期：2015.5.11</li>
    <li>主要更新：
        <ol>
            <li>修复特定网络环境下thrift库issue，提高SDK稳定性</li>
            <li>改进在线参数功能实现</li>
        </ol>
    </li>
</ul>
<hr />

<h3>版本：v3.4.8</h3>
<ul>
    <li>发布日期：2015.4.29</li>
    <li>主要更新：
        <ol>
            <li>修复解析arm64错误报告失败</li>
        </ol>
    </li>
</ul>
<hr />

<h3>版本：v3.4.6</h3>
<ul>
    <li>发布日期：2015.3.6</li>
    <li>主要更新：
        <ol>
            <li>修复SDK相关bug</li>
        </ol>
    </li>
</ul>
<hr />

<h3>版本：v3.4.4</h3>
<ul>
    <li>发布日期：2015.1.27</li>
    <li>主要更新：
        <ol>
            <li>SDK逻辑框架重构，提高SDK的稳定性。</li>
            <li>对传输日志进行加密，提高了数据的安全性。</li>
            <li>添加缓解并发冲击的策略，并增强服务器对SDK的控制，提高了系统稳定性。</li>
            <li>改进调试模式下控制台的输出，方便集成正确性的检查。</li>
            <li>修复thrift库命名冲突的问题</li>
            <li>修复相关bug</li>
        </ol>
    </li>
</ul>
<hr />

<h3>版本：v3.1.8</h3>
<ul>
    <li>发布日期：2014.09.27</li>
    <li>主要更新：
        <ol>
            <li>修复iOS6.1.3系统库调用deadlock问题</li>
        </ol>
    </li>
</ul>
<hr />

<h3>版本：v3.1.6</h3>
<ul>
    <li>发布日期：2014.09.25</li>
    <li>主要更新：
        <ol>
            <li>修正iOS8下Crash Log不能收集的问题</li>
        </ol>
    </li>
</ul>
<hr />

<h3>版本：v3.1.2 (OpenUDID)</h3>

<ul>
<li>发布日期：2014.05.21</li>
<li>主要更新：

<ol>
<li>提高安全性和准确性，并且对传输内容进行压缩</li>
<li>增加社交统计的功能，对自有分享等社交行为进行统计</li>
<li>新增计算事件统计的接口</li>
<li>修复相关bug</li>
</ol>
</li>
</ul>


<hr />


<h3>版本：v2.2.1 (OpenUDID)</h3>

<ul>
<li>发布日期：2013.09.13</li>
<li>主要更新：

<ol>
<li>兼容iOS7,增加arm64架构</li>
<li>分离armv6架构,需要的请自行添加,未来不再继续维护 </li>
<li>bug fix</li>
</ol>
</li>
</ul>


<hr />

<h3>版本：v2.2.0 (UDID+OpenUDID)</h3>

<ul>
<li>发布日期：2013.04.01</li>
<li>主要更新：

<ol>
<li> <code>UMOnlineConfigDidFinishedNotification</code> 在网络获取失败时也会被post，使用上次的缓存数据</li>
<li> event传值作了长度限制,eventId、attributes的key最大为128个bytes(128个英文及数字或42个左右汉字),label、attributes的value最大为256个bytes(256个英文及数字或84个左右汉字),
 超过后将被截短,其中eventId超过的将抛弃不再发送</li>
<li> <code>startWithAppkey</code>方法不在<code>application:didFinishLaunchingWithOptions:</code>里也会被调用,但常规Xcode工程不建议这样调用</li>
</ol>
</li>
</ul>


<hr />

<h3>版本：v2.1.3 (UDID+OpenUDID)</h3>

<ul>
<li>发布日期：2012.12.28</li>
<li>主要更新：

<ol>
<li> 修复 <code>SEND_ON_EXIT</code> 策略在无网络情况下计数的bug</li>
<li> 修复Crash Log中<code>dSYM UUID</code>生成的bug</li>
</ol>
</li>
</ul>


<hr />

<h3>版本：v2.1.2 (UDID+OpenUDID)</h3>

<ul>
<li>发布日期：2012.12.19</li>
<li>主要更新：

<ol>
<li> 增加<code>SEND_INTERVAL</code>,<code>SEND_ON_EXIT</code>两种发送策略</li>
<li> 原有的<code>REALTIME</code>,<code>SENDWIFIONLY</code>只在<code>模拟器</code>和<code>DEBUG</code>模式下生效，真机release模式会自动改成<code>BATCH</code>。具体参见
<a href="http://blog.umeng.com/index.php/2012/12/0601/" target="_blank">关于发送策略及发送策略变更的说明</a></li>
<li> 增加 <code>+ (void)setLogSendInterval:(double)second;</code> 来设置最小发送间隔</li>
<li> 删除统计SDK自带的单向用户反馈组件，请使用独立的双向用户反馈SDK</li>
<li> <code>checkUpdate</code> 的回调方法放到<code>MainThread</code> 中执行</li>
<li> 修复<code>crash log</code>地址错误的bug</li>
<li> 修复<code>device_id</code>为空的bug</li>
<li> 修复<code>setAppVersion:</code>的bug</li>
</ol>
</li>
</ul>


<hr />

<h3>版本：v2.1.1 (UDID+OpenUDID)</h3>

<ul>
<li>发布日期：2012.09.19</li>
<li>主要更新：

<ol>
<li> 兼容iOS6,增加armv7s架构</li>
</ol>
</li>
</ul>


<hr />

<h3>版本：v2.1.0 (UDID+OpenUDID)</h3>

<ul>
<li>发布日期：2012.09.11</li>
<li>主要更新：

<ol>
<li> 增加地理位置统计的接口</li>
</ol>


<p>  <code>+[MobClick setLocation:(CLLocation *)location]</code>;</p>

<p>  <code>+[MobClick setLatitude:(double)latitude longitude:(double)longitude];</code></p>

<ol>
<li> <code>checkUpdate</code>方法对UIAlertView的标题和按钮文字增加i18N多国语言支持</li>
<li> <code>event</code>在程序<code>launch</code>事件发生之后发送,修正用户集中在0点出现</li>
<li> 错误报告发送逻辑修改，旧版本的crash在App更新时不再发送，避免旧版crash出现在新版本中</li>
<li> 开放 <code>startSession</code>  接口,详见头文件注释说明</li>
<li> 增加在线参数获取结束的<code>Notification</code>: <code>UMOnlineConfigDidFinishedNotification</code>，开发者可以监听此通知得到最新的在线参数</li>
<li> 如果需要在webview中用js调用友盟接口，请使用https://github.com/marcuswestin/WebViewJavascriptBridge</li>
</ol>
</li>
</ul>


<hr />

<h3>版本：v2.0.0 (UDID+OpenUDID)</h3>

<ul>
<li>发布日期：2012.05.21</li>
<li>主要更新：

<ol>
<li> event增加时长统计</li>
<li> event增加属性统计，当event发生时可以回传多个相关属性</li>
<li> 使用硬件UDID(uniqueIdentifier)为统计标准，兼有mac地址的统计</li>
<li> 去掉静态编译的<code>libz</code>,使SDK binary文件 <code>libMobClickLibrary.a</code> 大小进一步缩减 <code>1.2M</code> —> <code>910K</code>, 但需要手动添加<code>libz.dylib</code></li>
</ol>
</li>
</ul>


<blockquote><p><code>TARGETS</code>–><code>Build Phases</code>–><code>Link Binary With Libraries</code>–> + –><code>libz.dylib</code></p></blockquote>

<hr />

<h3>版本：v1.7 (OpenUDID)</h3>

<ul>
<li>发布日期：2012.03.28</li>
<li>主要更新：

<ol>
<li> 简化SDK集成，一句代码集成友盟SDK([MobClick startWithAppkey:]),不再需要手动link framework</li>
<li> SDK binary文件 libMobClickLibrary.a 大小缩减近40%,1.9M —> 1.2M</li>
<li> 增加页面访问路径统计</li>
<li> 使用openUDID作用户标识（可能会造成您的新增用户数据波动）</li>
<li> 增加mac地址字段</li>
</ol>
</li>
</ul>


<hr />

<h3>版本：v1.6.8 (UDID)</h3>

<ul>
<li>发布日期：2011.12.16</li>
<li>主要更新：

<ol>
<li> 按渠道自动更新检测</li>
<li> 使用在线参数功能，可以让你动态修改应用中的参数值</li>
<li> 动态调整发送策略</li>
</ol>
</li>
</ul>


<hr />

<h3>版本：v1.6.7 (UDID)</h3>

<ul>
<li>发布日期：2011.11.23</li>
<li>主要更新：

<ol>
<li> 解决gprs时、网络条件比较差时界面卡的情况。(去掉<code>Reachability.h</code>判断网络)</li>
<li> 去掉<code>Other Linker Flags</code> 需要设置<code>-all_load</code>和<code>-ObjC</code></li>
<li> 采用<code>NSNotificationCenter</code>监听App的打开和关闭事件，省去了集成SDK时需要手动调用<code>appLaunched</code>，<code>appTerminated</code>的步骤</li>
<li> 增加 SDK log开关<code>+ (void)setLogEnabled:(BOOL)value;</code></li>
<li> 增加异常捕捉开关<code>+ (void)setCrashReportEnabled:(BOOL)value;</code>,需要在<code>setDelegate</code>方法之前调用</li>
<li> 用户反馈界面支持iPad</li>
</ol>
</li>
</ul>

</body>
</html>